As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option available to users is information handling systems. An information handling system generally processes, compiles, stores, and/or communicates information or data for business, personal, or other purposes thereby allowing users to take advantage of the value of the information. Because technology and information handling needs and requirements vary between different users or applications, information handling systems may also vary regarding what information is handled, how the information is handled, how much information is processed, stored, or communicated, and how quickly and efficiently the information may be processed, stored, or communicated. The variations in information handling systems allow for information handling systems to be general or configured for a specific user or specific use such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, information handling systems may include a variety of hardware and software components that may be configured to process, store, and communicate information and may include one or more information handling systems, data storage systems, and networking systems.
In desktop virtualization or remote working environments, a remote server provides desktop and application resources to a user. The desktop or application resources are published to the user's computing device by way of a protocol, such as the remote desktop protocol (RDP). The remote desktop or application may be displayed on a user's computing device using a web browser, such as a standards-based web browser. However, standards-based web browsers have limited support for graphics formats, and are not capable of natively rendering the graphics information contained in an RDP data packet. To provide access to a remote desktop or application resource using a standards-based web browser, an implementation of RDP graphics in a standards-based web browser is used. Because RDP graphics are compressed using run-length encoding, a decompressor is needed to display the graphics in a web browser. The present invention provides an efficient decompressor for displaying graphics in a web browser.
Traditionally, RDP clients are written in a native, full-featured programming language such as C or C++. In such an environment, the native RDP client may utilize an operating system's graphics library to display graphics information. Many operating systems support 8, 16, 24 and 32-bit color spaces. For such operating systems, it is unnecessary to convert between color spaces when RDP graphics data in 8, 16, 24, or 32-bit color space is received from the remote server. However, web browsers compatible with hypertext markup language (HTML) 5 (HTML5) and CANVAS only support a 32-bit color space. Thus, it is necessary to convert graphics received in an 8, 16, or 24-bit color space to a 32-bit color space for rendering by a web browser. But, it may be difficult to accomplish color space conversion in a scripting language such as JAVASCRIPT as the environment runs within a limited host environment provided by the web browser where the operating systems graphics library is not accessible and does not permit pointer operations and manipulations. The present invention provides for drawing or rendering images, such as graphical data comprising, for example, audio or video, or content within such an environment.